(complex and detailed)